package com.example.springboot01.event;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;

/**
 * @author keyer
 * @Description : 类描述
 * Created by cyd on 2021-04-30 23:38:17
 */
@Configuration
@ComponentScan("com.example.springboot01.event")
//@EnableAsync
public class EventConfig implements AsyncConfigurer {
    /**
     * 1.如果事件监听器是异步执行，就需要配置这个线程池；
     * 2.线程池可以配置多个，通过@Bean(name = "xxx")给予不同的id即可；；
     * 3.要使用线程池，只需要要在监听器的onApplicationEvent方法上指明使用哪个即可；
     */
//    @Override
//    @Bean(name = "taskExecutor")
//    public TaskExecutor getAsyncExecutor() {
//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//        executor.initialize();
//        //核心线程数
//        executor.setCorePoolSize(10);
//        //最大线程数
//        executor.setMaxPoolSize(20);
//        //队列大小
//        executor.setQueueCapacity(1000);
//        //线程最大空闲时间
//        executor.setKeepAliveSeconds(300);
//        //指定用于新创建的线程名称的前缀。
//        executor.setThreadNamePrefix("ics-Executor-");
//        // 设置拒绝策略
//        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//        return executor;
//    }
}
